Traditional software architecture uses static service composition to create a software based service 10, as shown in FIG. 1A. A number of applications 20 are selected at the time the service 10 is designed. An application is a program designed to perform a specific function and, if required, communicate or interact with other applications. The interactions 30 between the applications 20 are also selected at the time the service 10 is composed. The applications 20 and interactions 30 are selected by a service software designer to achieve the functionality of the desired service 10.
For example, to construct a stock quote service, a service software designer could select three applications A1-A3. The first application (A1) might receive a stock quote feed from a source such as the Internet. The second application (A2) might review the stock quote feed looking for a specific stock at a particular price and the third application (A3) might send an E-mail message to a user when the stock reached that price. The application A1 would interact with the application A2 by periodically sending stock quotes. The application A2 would interact with the application A3 by announcing when the stock has reached the desired price.
There are several problems, however, with using static service composition to create a software based service. Because the selected applications 20 and interactions 30 are fixed at the time the service 10 is designed, they cannot be changed dynamically when the service 10 is executed. As used herein, the words "dynamic" and "dynamically" refer to events occurring at the general time a software service is executed or run, as opposed to a "static" composition which is fixed at the time a software service is created. The resulting software based service is typically built as a monolithic application that is difficult to enhance or modify. This makes changing the functionality of a software based service a very time consuming and expensive task. If a user wanted the stock quote service to send a message to a pager, instead of sending an E-mail message, the major parts of the service would have to be recomposed, retested and reinstalled. With complicated software based services, this process can take well over a year to complete and requires the efforts of specially trained software designers and programers.
Also, because traditional software architecture dictates that applications 20 and interactions 30 cannot be changed dynamically, only a very limited flexibility can be offered to a user. There is no way, for example, that a user can reconfigure the service 10 to perform an entirely new function, such as creating a graph of a stock price over the past month. Similarly, a user cannot take advantage of an upgraded version of an application without recomposing the entire service 10.
Moreover, because services are created and customized by service software designers, the interactions 30 among the applications 20 are not standardized, nor is the mechanism used to select and to configure the applications 20. The "state" of each application, or set of variables that define the information in the application, is also saved and restored in an ad-hoc manner. These factors contribute to making static service composition a slow, expensive and error-prone operation.
Finally, because the service 10 is composed at design time, and not at run time, it is difficult to take full advantage of the benefits of a distributed network. One advantage of a distributed network is that components can execute on different computers to balance software loads in the network. A static service software designer has no way of knowing, for example, if the applications A1, A2 and A3 can be more efficiently run on different computers. This ultimately results in higher operating expenses because it is necessary to statically assign software to particular machines.
In view of the foregoing, it can be appreciated that a substantial need exists for a method and apparatus for providing a dynamic service composition software architecture that lets a software based service be easily modified.